package lx3;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

//客户端：将本地文件上传到服务器。接收服务器的反馈。
//服务器：接收客户端上传的文件，上传完毕之后给出反馈。
public class Sever {

    public static void main(String[] args) throws IOException {
        /*
        流程:1.用FileInputStream读取本地文件
        2.读到内存中以后，再用网络的io传递给服务器
        3.服务器接收到文件以后，用FileOutputStream写入到本地
        4.当写入完毕以后，服务器给出反馈---- 写入成功
         */

        //创建服务器对象绑定端口
        ServerSocket ss = new ServerSocket(8888);
        //等待客户端连接，连接成功返回一个Socket对象
        Socket s = ss.accept();
        System.out.println("客户端连接成功");

        //创建输入流，读取客户端发送的数据并保持到本地文件当中
        InputStream is = s.getInputStream();
        BufferedInputStream bis = new BufferedInputStream(is);
        //读取数据写入本地文件当中
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test.jpg"));
        //边读边写，服务器读取的数据写入到本地文件 服务器接收到文件以后，用FileOutputStream写入到本地
        int len;
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
        }
        bos.close();
        //当写入完毕以后，服务器给出反馈---- 写入成功 现在服务器作为输出端
        OutputStream os = s.getOutputStream();
        os.write("文件写上传成功".getBytes());
        //关闭资源
        s.close();//与客服端的连接断开
        ss.close();//关闭服务器

    }
}
